import { useIMStore } from '/@/stores/im'
import { Local } from '/@/utils/storage';

/**
 * 应用初始化函数
 * 在应用启动时执行必要的初始化操作
 */
export const initializeApp = async function (): Promise<void> {
  console.log('开始应用初始化...')

  try {
    // 检查并恢复IM连接
    await initIM()

    console.log('应用初始化完成')
  }
  catch (error) {
    console.error('应用初始化失败:', error)
  }
}

/**
 * 初始化IM连接
 */
export async function initIM(): Promise<void> {
  const imStore = useIMStore()
  
  try {
    // 尝试自动重连
    const result = await imStore.autoReconnect()
    
    if (result && result.code === 0) {
      console.log('IM自动重连成功')
    }
    else {
      console.warn('IM自动重连失败:', result?.message || '未知错误')
    }
  }
  catch (error) {
    console.error('IM初始化异常:', error)
  }
}

/**
 * 处理页面可见性变化
 */
export function handleVisibilityChange(): void {
  const imStore = useIMStore()
  
  if (document.visibilityState === 'visible') {
    // 页面变为可见时，如果IM未连接，尝试重连
    if (!imStore.isLoggedIn && imStore.tim) {
      console.log('页面可见，尝试重连IM...')
      
      // 延迟一下再重连，避免频繁操作
      setTimeout(async () => {
        const result = await imStore.autoReconnect()
        
        if (result && result.code === 0) {
          console.log('页面可见时重连成功')
        }
      }, 1000)
    }
  }
}
